<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.17"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Aestate: aestate/util/Log.py Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Aestate
   &#160;<span id="projectnumber">1.0.5</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.17 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="dir_374ee6e3281d8312d956f1f155302869.html">aestate</a></li><li class="navelem"><a class="el" href="dir_f4fb22c2f037e52003d190fd7f014e82.html">util</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="headertitle">
<div class="title">Log.py</div>  </div>
</div><!--header-->
<div class="contents">
<a href="_log_8py.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"><a class="line" href="namespaceaestate_1_1util_1_1_log.html">    1</a></span>&#160;<span class="keyword">import</span> datetime</div>
<div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="keyword">import</span> os</div>
<div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="keyword">import</span> sys</div>
<div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="keyword">import</span> threading</div>
<div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="keyword">import</span> traceback</div>
<div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160; </div>
<div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="keyword">from</span> <a class="code" href="namespaceaestate_1_1util_1_1others.html">aestate.util.others</a> <span class="keyword">import</span> write, logTupleToText</div>
<div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="keyword">from</span> <a class="code" href="namespaceaestate_1_1work_1_1_cache.html">aestate.work.Cache</a> <span class="keyword">import</span> LogCache</div>
<div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="keyword">from</span> <a class="code" href="namespaceaestate_1_1work_1_1_modes.html">aestate.work.Modes</a> <span class="keyword">import</span> Singleton</div>
<div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="keyword">from</span> <a class="code" href="namespaceaestate_1_1exception.html">aestate.exception</a> <span class="keyword">import</span> LogStatus</div>
<div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="keyword">from</span> <a class="code" href="namespaceaestate_1_1util.html">aestate.util</a> <span class="keyword">import</span> others</div>
<div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="keyword">from</span> <a class="code" href="namespaceaestate_1_1work_1_1commad.html">aestate.work.commad</a> <span class="keyword">import</span> __log_logo__</div>
<div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160; </div>
<div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160; </div>
<div class="line"><a name="l00015"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1_fields_length.html">   15</a></span>&#160;<span class="keyword">class </span><a class="code" href="classaestate_1_1util_1_1_log_1_1_fields_length.html">FieldsLength</a>:</div>
<div class="line"><a name="l00016"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1_fields_length.html#a5ba49b286cec488ed508a9c95d2b4265">   16</a></span>&#160;    DATETIME_FORMAT = 27</div>
<div class="line"><a name="l00017"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1_fields_length.html#ad74d527ab60c2204d8808ec6c8f4a595">   17</a></span>&#160;    INFO_FORMAT = 5</div>
<div class="line"><a name="l00018"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1_fields_length.html#a1c69c60d0622940aa15c930c0e056f52">   18</a></span>&#160;    LINE_FORMAT = 5</div>
<div class="line"><a name="l00019"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1_fields_length.html#a66fab962394766706b76d7f3ae18f22f">   19</a></span>&#160;    OPERATION_FORMAT = 14</div>
<div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;    <span class="comment"># HEX_FORMAT = 17</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1_fields_length.html#ad2635c548f5528636c2eabdcedc2b15c">   21</a></span>&#160;    TASK_FORMAT = 7</div>
<div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;    <span class="comment"># CLASS_FORMAT = 70</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1_fields_length.html#a37f76340ff7cffd2da002c753d6aa218">   23</a></span>&#160;    MSG_FORMAT = 0</div>
<div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160; </div>
<div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160; </div>
<div class="line"><a name="l00026"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1_console_color.html">   26</a></span>&#160;<span class="keyword">class </span><a class="code" href="classaestate_1_1util_1_1_log_1_1_console_color.html">ConsoleColor</a>:</div>
<div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;    <span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="stringliteral">    控制台类型</span></div>
<div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="stringliteral">    &quot;&quot;&quot;</span></div>
<div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160; </div>
<div class="line"><a name="l00031"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1_console_color_1_1_font_color.html">   31</a></span>&#160;    <span class="keyword">class </span><a class="code" href="classaestate_1_1util_1_1_log_1_1_console_color_1_1_font_color.html">FontColor</a>:</div>
<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;        <span class="comment"># 黑色</span></div>
<div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1_console_color_1_1_font_color.html#ae3ecec5ac5907093efeb3df6d628fd4a">   33</a></span>&#160;        BLACK = 30</div>
<div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;        <span class="comment"># 灰色</span></div>
<div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1_console_color_1_1_font_color.html#aad6662506458823b5c62374ebdaa9a96">   35</a></span>&#160;        GRAY = 90</div>
<div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;        <span class="comment"># 粉色</span></div>
<div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1_console_color_1_1_font_color.html#ab1f6769d3498a7a021d1cfeb52a02b3a">   37</a></span>&#160;        PINK = 31</div>
<div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;        <span class="comment"># 红色</span></div>
<div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1_console_color_1_1_font_color.html#a06f1cbd7f5d008b307e602abbf13b363">   39</a></span>&#160;        RED = 35</div>
<div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;        <span class="comment"># 绿色</span></div>
<div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1_console_color_1_1_font_color.html#a473d4bad749d2cac8c12638389783c9f">   41</a></span>&#160;        GREEN = 32</div>
<div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;        <span class="comment"># 浅绿色</span></div>
<div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1_console_color_1_1_font_color.html#a5a5b1448d46ced595872587bbec49f39">   43</a></span>&#160;        LIGHT_GREEN = 91</div>
<div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;        <span class="comment"># 黄色</span></div>
<div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1_console_color_1_1_font_color.html#a201499e2cf317ab1f59fdce2ab10da05">   45</a></span>&#160;        YELLOW = 33</div>
<div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;        <span class="comment"># 浅黄色</span></div>
<div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1_console_color_1_1_font_color.html#afcc49a7913b7a90360b93d7657f4bf25">   47</a></span>&#160;        LIGHT_YELLOW = 92</div>
<div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;        <span class="comment"># 深黄色</span></div>
<div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1_console_color_1_1_font_color.html#a24d59ab520da88d18224047920a6ef2e">   49</a></span>&#160;        DARK_YELLOW = 93</div>
<div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;        <span class="comment"># 紫色</span></div>
<div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1_console_color_1_1_font_color.html#a71eef62422d05c9310b5341be0483450">   51</a></span>&#160;        PURPLE = 34</div>
<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;        <span class="comment"># 浅紫色</span></div>
<div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1_console_color_1_1_font_color.html#ae5693659fab70a2767c982e5ddc63fe0">   53</a></span>&#160;        LIGHT_PURPLE = 96</div>
<div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;        <span class="comment"># 青蓝色</span></div>
<div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1_console_color_1_1_font_color.html#a4958d528f56e5927f879c1f493723713">   55</a></span>&#160;        CYAN = 36</div>
<div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;        <span class="comment"># 白色</span></div>
<div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1_console_color_1_1_font_color.html#a6687c3c82a49508eb3914bd813c0e5a8">   57</a></span>&#160;        WHITE = 37</div>
<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;        <span class="comment"># 成功的颜色 和 info的颜色</span></div>
<div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1_console_color_1_1_font_color.html#a2ad018c9cb604c0b045e72939b1f7592">   59</a></span>&#160;        SUCCESS_COLOR = GREEN</div>
<div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;        <span class="comment"># 失败的颜色 和 错误的颜色</span></div>
<div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1_console_color_1_1_font_color.html#ace2acf93a82f45a0dab2176b4525c4d2">   61</a></span>&#160;        ERROR_COLOR = RED</div>
<div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;        <span class="comment"># 警告的颜色</span></div>
<div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1_console_color_1_1_font_color.html#ae03687d5939e01b54622d689eea1aedc">   63</a></span>&#160;        WARNING_COLOR = YELLOW</div>
<div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160; </div>
<div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1_console_color_1_1_background_color.html">   65</a></span>&#160;    <span class="keyword">class </span><a class="code" href="classaestate_1_1util_1_1_log_1_1_console_color_1_1_background_color.html">BackgroundColor</a>:</div>
<div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;        <span class="comment"># 黑色</span></div>
<div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1_console_color_1_1_background_color.html#a8dba09431d86c74950bc82ffd5360298">   67</a></span>&#160;        BLACK = 40</div>
<div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;        <span class="comment"># 红色</span></div>
<div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1_console_color_1_1_background_color.html#a43bcf62f0aac88e1606fdd04b1eec4b2">   69</a></span>&#160;        RED = 41</div>
<div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;        <span class="comment"># 绿色</span></div>
<div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1_console_color_1_1_background_color.html#a90cda56ba818afc82423f8d27e552cc2">   71</a></span>&#160;        GREEN = 42</div>
<div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;        <span class="comment"># 黄色</span></div>
<div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1_console_color_1_1_background_color.html#a70915fbf15c36d911c59b3ee68e72e52">   73</a></span>&#160;        YELLOW = 43</div>
<div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;        <span class="comment"># 蓝色</span></div>
<div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1_console_color_1_1_background_color.html#a2947a76f8763c043f6bd2d14c67a77f4">   75</a></span>&#160;        BLUE = 44</div>
<div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;        <span class="comment"># 紫红色</span></div>
<div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1_console_color_1_1_background_color.html#abc926704a31dbd622ac2feab74e3fd19">   77</a></span>&#160;        FUCHSIA = 45</div>
<div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;        <span class="comment"># 青蓝色</span></div>
<div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1_console_color_1_1_background_color.html#ace7f650733f6ad41abf580ac20bb0d5c">   79</a></span>&#160;        CYAN = 46</div>
<div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;        <span class="comment"># 白色</span></div>
<div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1_console_color_1_1_background_color.html#ac72d8ec507da9936634a1a3e29269038">   81</a></span>&#160;        WHITE = 47</div>
<div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160; </div>
<div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1_console_color_1_1_show_type.html">   83</a></span>&#160;    <span class="keyword">class </span><a class="code" href="classaestate_1_1util_1_1_log_1_1_console_color_1_1_show_type.html">ShowType</a>:</div>
<div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;        <span class="comment"># 默认</span></div>
<div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1_console_color_1_1_show_type.html#a5be895f58933d3b7df32c7ac148d53d1">   85</a></span>&#160;        DEFAULT = 0</div>
<div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;        <span class="comment"># 高亮</span></div>
<div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1_console_color_1_1_show_type.html#a820db7fd194981d32d068c31bbbb42d1">   87</a></span>&#160;        HIGHLIGHT = 1</div>
<div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;        <span class="comment"># 下划线</span></div>
<div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1_console_color_1_1_show_type.html#adc77346a3efad7bd73ec6b1391f2d6a9">   89</a></span>&#160;        UNDERSCORE = 4</div>
<div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;        <span class="comment"># 闪烁</span></div>
<div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1_console_color_1_1_show_type.html#a976bc832d8280921f857db001596dfb2">   91</a></span>&#160;        FLASHING = 5</div>
<div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;        <span class="comment"># 反显</span></div>
<div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1_console_color_1_1_show_type.html#ac1a095df19a7a54889d6e29ffb986705">   93</a></span>&#160;        REVERSE = 7</div>
<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;        <span class="comment"># 不可见</span></div>
<div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1_console_color_1_1_show_type.html#ad6c00a23d12edd63513657ac93d221f6">   95</a></span>&#160;        INVISIBLE = 8</div>
<div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160; </div>
<div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160; </div>
<div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1_console_write.html">   98</a></span>&#160;<span class="keyword">class </span><a class="code" href="classaestate_1_1util_1_1_log_1_1_console_write.html">ConsoleWrite</a>:</div>
<div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1_console_write.html#a09a5cbb2ebba72f1921989afd9eceaff">   99</a></span>&#160;    <span class="keyword">def </span><a class="code" href="classaestate_1_1util_1_1_log_1_1_console_write.html#a09a5cbb2ebba72f1921989afd9eceaff">__init__</a>(self):</div>
<div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1_console_write.html#af475435cc770e55290bb66e30065cd5f">  100</a></span>&#160;        self.<a class="code" href="classaestate_1_1util_1_1_log_1_1_console_write.html#af475435cc770e55290bb66e30065cd5f">fontColor</a> = ConsoleColor.FontColor.GREEN</div>
<div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1_console_write.html#a22d1b6c36731d4e2f98a64b379733ccc">  101</a></span>&#160;        self.<a class="code" href="classaestate_1_1util_1_1_log_1_1_console_write.html#a22d1b6c36731d4e2f98a64b379733ccc">showType</a> = ConsoleColor.ShowType.DEFAULT</div>
<div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1_console_write.html#a4a9c5798c794fdcbf14ba78faf716e35">  102</a></span>&#160;        self.<a class="code" href="classaestate_1_1util_1_1_log_1_1_console_write.html#a4a9c5798c794fdcbf14ba78faf716e35">backColor</a> = <span class="keywordtype">None</span></div>
<div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160; </div>
<div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;    <span class="comment"># @staticmethod</span></div>
<div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;    <span class="comment"># def write(messages, consoleWriteObj=None):</span></div>
<div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;    <span class="comment">#     prefix = &quot;{};&quot;.format(consoleWriteObj.showType) if consoleWriteObj.showType is not None else &quot;&quot;</span></div>
<div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;    <span class="comment">#     center = &quot;;&quot;.format(consoleWriteObj.backColor) if consoleWriteObj.backColor is not None else &quot;&quot;</span></div>
<div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;    <span class="comment">#     suffix = &quot;{}m{}&quot;.format(consoleWriteObj.fontColor, messages)</span></div>
<div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;    <span class="comment">#     out = &quot;\033[{}{}{}\033[0m&quot;.format(prefix, center, suffix)</span></div>
<div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;    <span class="comment">#     print(out)</span></div>
<div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160; </div>
<div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;    @staticmethod</div>
<div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1_console_write.html#a888617da7d597f9e545a6e10fd2ce2dd">  113</a></span>&#160;    <span class="keyword">def </span><a class="code" href="classaestate_1_1util_1_1_log_1_1_console_write.html#a888617da7d597f9e545a6e10fd2ce2dd">format_color</a>(text, color=None):</div>
<div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;        <span class="keywordflow">if</span> color <span class="keywordflow">is</span> <span class="keywordflow">not</span> <span class="keywordtype">None</span>:</div>
<div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;            prefix = <span class="stringliteral">&quot;{};&quot;</span>.format(ConsoleColor.ShowType.DEFAULT)</div>
<div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;            suffix = <span class="stringliteral">&quot;{}m{}&quot;</span>.format(color, text)</div>
<div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;            out = <span class="stringliteral">&quot;\033[{};{}\033[0m&quot;</span>.format(prefix, suffix)</div>
<div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;            <span class="keywordflow">return</span> out</div>
<div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;        <span class="keywordflow">return</span> text</div>
<div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160; </div>
<div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160; </div>
<div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1_a_log.html">  122</a></span>&#160;<span class="keyword">class </span><a class="code" href="classaestate_1_1util_1_1_log_1_1_a_log.html">ALog</a>(object):</div>
<div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1_a_log.html#ada92ea9666b0f557926e3834e87bebef">  123</a></span>&#160;    _instance_lock = threading.RLock()</div>
<div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160; </div>
<div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1_a_log.html#a054d6aada1363564b31f771589a6627c">  125</a></span>&#160;    <span class="keyword">def </span><a class="code" href="classaestate_1_1util_1_1_log_1_1_a_log.html#a054d6aada1363564b31f771589a6627c">__init__</a>(self, path, print_flag=False, save_flag=False, max_clear=10):</div>
<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;        <span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;<span class="stringliteral">        初始化配置</span></div>
<div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;<span class="stringliteral">        :param path:保存的路径</span></div>
<div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;<span class="stringliteral">        :param print_flag:是否打印日志 默认False</span></div>
<div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;<span class="stringliteral">        :param save_flag:是否保存日志 默认False</span></div>
<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;<span class="stringliteral">        :param max_clear:日志储存最大限制,默认10MB 单位:MB</span></div>
<div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;<span class="stringliteral">        &quot;&quot;&quot;</span></div>
<div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1_a_log.html#af4863e5533f9ef060b6f0122aac9a079">  139</a></span>&#160;        self.<a class="code" href="classaestate_1_1util_1_1_log_1_1_a_log.html#af4863e5533f9ef060b6f0122aac9a079">max_clear</a> = max_clear * 1024 * 1000</div>
<div class="line"><a name="l00140"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1_a_log.html#a81ebe6c29c966d9ba3d615eacea36c68">  140</a></span>&#160;        self.<a class="code" href="classaestate_1_1util_1_1_log_1_1_a_log.html#a81ebe6c29c966d9ba3d615eacea36c68">path</a> = path</div>
<div class="line"><a name="l00141"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1_a_log.html#a6e5724469f1334b1e764c6ed56c74a79">  141</a></span>&#160;        self.<a class="code" href="classaestate_1_1util_1_1_log_1_1_a_log.html#a6e5724469f1334b1e764c6ed56c74a79">print_flag</a> = print_flag</div>
<div class="line"><a name="l00142"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1_a_log.html#a20784ee33a67271c18d1167075d722f8">  142</a></span>&#160;        self.<a class="code" href="classaestate_1_1util_1_1_log_1_1_a_log.html#a20784ee33a67271c18d1167075d722f8">save_flag</a> = save_flag</div>
<div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160; </div>
<div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;    @staticmethod</div>
<div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1_a_log.html#a8ab5c457b6aa576a6ad52c790b21eb27">  145</a></span>&#160;    <span class="keyword">def </span><a class="code" href="classaestate_1_1util_1_1_log_1_1_a_log.html#a8ab5c457b6aa576a6ad52c790b21eb27">pure_log</a>(msg, **kwargs):</div>
<div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;        <span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;<span class="stringliteral">        输出任务执行日志</span></div>
<div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;<span class="stringliteral">        :param msg:消息</span></div>
<div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;<span class="stringliteral">        &quot;&quot;&quot;</span></div>
<div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;        ALog.log(msg=msg, **kwargs)</div>
<div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160; </div>
<div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;    @staticmethod</div>
<div class="line"><a name="l00155"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1_a_log.html#ae487698fec9a776b3d4ab92dbfe6da0a">  155</a></span>&#160;    <span class="keyword">def </span><a class="code" href="classaestate_1_1util_1_1_log_1_1_a_log.html#ae487698fec9a776b3d4ab92dbfe6da0a">format_text</a>(field: LogStatus, line, obj, task_name, msg, ned_text=<span class="keyword">False</span>,</div>
<div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;                    text_color: <a class="code" href="classaestate_1_1util_1_1_log_1_1_console_color_1_1_font_color.html">ConsoleColor.FontColor</a> = <span class="keywordtype">None</span>):</div>
<div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;        <span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;<span class="stringliteral">        将字符串格式化成好看的颜色</span></div>
<div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;<span class="stringliteral">        &quot;&quot;&quot;</span></div>
<div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;        <span class="keywordflow">try</span>:</div>
<div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;            <span class="keywordflow">if</span> obj <span class="keywordflow">is</span> <span class="keywordflow">not</span> <span class="keywordtype">None</span>:</div>
<div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;                write_repr = others.fullname(obj)</div>
<div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;            <span class="keywordflow">else</span>:</div>
<div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;                write_repr = <span class="stringliteral">&#39;OBJECT IS NULL&#39;</span></div>
<div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;        <span class="keywordflow">except</span> TypeError:</div>
<div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;            write_repr = <span class="stringliteral">&#39;OBJECT CAN`T NOT PARSE&#39;</span></div>
<div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;        t = datetime.datetime.utcnow().strftime(<span class="stringliteral">&#39;%Y-%m-%d %H:%M:%S.%f&#39;</span>)</div>
<div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;        pure_text = <span class="stringliteral">&#39; &#39;</span>.join([str(t), str(field.value), str(line), str(hex(id(obj))),</div>
<div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;                              <span class="stringliteral">&#39;[{}]&#39;</span>.format(task_name), str(write_repr), f<span class="stringliteral">&quot; : {msg}&quot;</span>])</div>
<div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;        t = ConsoleWrite.format_color(f<span class="stringliteral">&quot;{t}&quot;</span>.ljust(FieldsLength.DATETIME_FORMAT), ConsoleColor.FontColor.CYAN)</div>
<div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;        _field = ConsoleWrite.format_color(f<span class="stringliteral">&quot;{field.value}&quot;</span>.rjust(FieldsLength.INFO_FORMAT),</div>
<div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;                                           ConsoleColor.FontColor.GREEN</div>
<div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;                                           <span class="keywordflow">if</span> field == LogStatus.Info</div>
<div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;                                           <span class="keywordflow">else</span> ConsoleColor.FontColor.RED</div>
<div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;                                           <span class="keywordflow">if</span> field == LogStatus.Error</div>
<div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;                                           <span class="keywordflow">else</span> ConsoleColor.FontColor.YELLOW</div>
<div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;                                           <span class="keywordflow">if</span> field == LogStatus.Warn</div>
<div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;                                           <span class="keywordflow">else</span> ConsoleColor.FontColor.YELLOW)</div>
<div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;        line = f<span class="stringliteral">&quot;{line}&quot;</span>.rjust(FieldsLength.LINE_FORMAT)</div>
<div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;        hex_id = ConsoleWrite.format_color(f<span class="stringliteral">&quot; {str(hex(id(obj)))}&quot;</span>, ConsoleColor.FontColor.PINK)</div>
<div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;        task_name = ConsoleWrite.format_color(f<span class="stringliteral">&quot;{task_name}&quot;</span>.rjust(FieldsLength.TASK_FORMAT),</div>
<div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;                                              ConsoleColor.FontColor.PURPLE)</div>
<div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;        write_repr = ConsoleWrite.format_color(write_repr,</div>
<div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;                                               ConsoleColor.FontColor.LIGHT_GREEN</div>
<div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;                                               <span class="keywordflow">if</span> field != LogStatus.Error</div>
<div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;                                               <span class="keywordflow">else</span> ConsoleColor.FontColor.RED)</div>
<div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;        msg = ConsoleWrite.format_color(f<span class="stringliteral">&quot; : {msg}&quot;</span>, text_color)</div>
<div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;        info = <span class="stringliteral">&quot;{}{}{}{}{}{}{}&quot;</span>.format(t, _field, line, hex_id, <span class="stringliteral">&#39; [{}] &#39;</span>.format(task_name), write_repr, msg)</div>
<div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;        <span class="keywordflow">if</span> ned_text:</div>
<div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;            <span class="keywordflow">return</span> info, pure_text</div>
<div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;        <span class="keywordflow">return</span> info</div>
<div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160; </div>
<div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;    @staticmethod</div>
<div class="line"><a name="l00194"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1_a_log.html#a04d47224afd614753a6e828353db7082">  194</a></span>&#160;    <span class="keyword">def </span><a class="code" href="classaestate_1_1util_1_1_log_1_1_a_log.html#a04d47224afd614753a6e828353db7082">log</a>(msg, obj=None, line=sys._getframe().f_back.f_lineno, task_name=<span class="stringliteral">&#39;TEXT&#39;</span>, LogObject=<span class="keywordtype">None</span>,</div>
<div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;            field: LogStatus = LogStatus.Info, func=<span class="keywordtype">None</span>,</div>
<div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;            text_color: <a class="code" href="classaestate_1_1util_1_1_log_1_1_console_color_1_1_font_color.html">ConsoleColor.FontColor</a> = <span class="keywordtype">None</span>, **kwargs):</div>
<div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;        <span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;<span class="stringliteral">        输出任务执行日志</span></div>
<div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;<span class="stringliteral">        :param msg:消息</span></div>
<div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;<span class="stringliteral">        :param obj:执行日志的对象地址</span></div>
<div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;<span class="stringliteral">        :param line:被调用前的行数</span></div>
<div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;<span class="stringliteral">        :param task_name:任务对象的值</span></div>
<div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;<span class="stringliteral">        :param LogObject:写出文件的对象</span></div>
<div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;<span class="stringliteral">        :param field:日志模式</span></div>
<div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;<span class="stringliteral">        :param func:日志执行后的自定义操作</span></div>
<div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;<span class="stringliteral">        &quot;&quot;&quot;</span></div>
<div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160; </div>
<div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;        <span class="keywordflow">try</span>:</div>
<div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;            <span class="keywordflow">if</span> obj <span class="keywordflow">is</span> <span class="keywordflow">not</span> <span class="keywordtype">None</span>:</div>
<div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;                write_repr = others.fullname(obj)</div>
<div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;            <span class="keywordflow">else</span>:</div>
<div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;                write_repr = <span class="stringliteral">&#39;OBJECT IS NULL&#39;</span></div>
<div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;        <span class="keywordflow">except</span> TypeError:</div>
<div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;            write_repr = <span class="stringliteral">&#39;OBJECT CAN`T NOT PARSE&#39;</span></div>
<div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160; </div>
<div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;        <span class="comment"># write_repr = repr if repr and not repr_c else repr_c[0] if repr_c else type(obj)</span></div>
<div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;        <span class="comment"># 格式：时间 类型 被调用时行数 对象地址 日志信息 执行类 信息</span></div>
<div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;        t = datetime.datetime.utcnow().strftime(<span class="stringliteral">&#39;%Y-%m-%d %H:%M:%S.%f&#39;</span>)[:-3]</div>
<div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;        con_text = <span class="stringliteral">&#39; &#39;</span>.join([str(t), str(field.value), str(line), str(hex(id(obj))),</div>
<div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;                             <span class="stringliteral">&#39;[{}]&#39;</span>.format(task_name), str(write_repr), f<span class="stringliteral">&quot; : {msg}&quot;</span>])</div>
<div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;        info = ALog.format_text(field, line, obj, task_name, msg, text_color=text_color)</div>
<div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160; </div>
<div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;        <span class="comment"># print(info)</span></div>
<div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160; </div>
<div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;        <span class="keyword">def </span>__log_obj_write__(_object):</div>
<div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;            <span class="keywordflow">if</span> _object <span class="keywordflow">is</span> <span class="keywordflow">not</span> <span class="keywordtype">None</span>:</div>
<div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;                <span class="keywordflow">if</span> field == LogStatus.Info:</div>
<div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;                    _object.info(con_text, pure_text=info, line=line, obj=obj)</div>
<div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;                <span class="keywordflow">elif</span> field == LogStatus.Error:</div>
<div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;                    _object.error(con_text, pure_text=info, line=line, obj=obj)</div>
<div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;                <span class="keywordflow">elif</span> field == LogStatus.Warn:</div>
<div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;                    _object.warn(con_text, pure_text=info, line=line, obj=obj)</div>
<div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;                <span class="keywordflow">else</span>:</div>
<div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;                    _object.info(con_text, pure_text=info, line=line, obj=obj)</div>
<div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;            <span class="keywordflow">else</span>:</div>
<div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;                print(info)</div>
<div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160; </div>
<div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;        <span class="keywordflow">if</span> obj <span class="keywordflow">is</span> <span class="keywordflow">not</span> <span class="keywordtype">None</span>:</div>
<div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;            <span class="keywordflow">if</span> hasattr(obj, <span class="stringliteral">&#39;log_obj&#39;</span>):</div>
<div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;                __log_obj_write__(obj.log_obj)</div>
<div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;            <span class="keywordflow">else</span>:</div>
<div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;                __log_obj_write__(LogObject)</div>
<div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;        <span class="keywordflow">else</span>:</div>
<div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;            __log_obj_write__(LogObject)</div>
<div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;        <span class="keywordflow">if</span> func <span class="keywordflow">is</span> <span class="keywordflow">not</span> <span class="keywordtype">None</span>:</div>
<div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;            func(con_text)</div>
<div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160; </div>
<div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;        <span class="keywordflow">return</span> info</div>
<div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160; </div>
<div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;    @staticmethod</div>
<div class="line"><a name="l00252"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1_a_log.html#a3e33b2ad8d5c73294686f5d77439bfa6">  252</a></span>&#160;    <span class="keyword">def </span><a class="code" href="classaestate_1_1util_1_1_log_1_1_a_log.html#a3e33b2ad8d5c73294686f5d77439bfa6">warning</a>(**kwargs):</div>
<div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;        ALog.log(task_name=<span class="stringliteral">&#39;WARNING&#39;</span>, field=LogStatus.Warn, **kwargs)</div>
<div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160; </div>
<div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;    @staticmethod</div>
<div class="line"><a name="l00256"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1_a_log.html#af3bd04c1beaee33453be2c373c1a52b3">  256</a></span>&#160;    <span class="keyword">def </span><a class="code" href="classaestate_1_1util_1_1_log_1_1_a_log.html#af3bd04c1beaee33453be2c373c1a52b3">log_error</a>(msg=None, obj=None, line=sys._getframe().f_back.f_lineno, task_name=<span class="stringliteral">&#39;ERROR&#39;</span>,</div>
<div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;                  LogObject=<span class="keywordtype">None</span>, raise_exception=<span class="keyword">False</span>):</div>
<div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;        <span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;<span class="stringliteral">        :param msg:描述</span></div>
<div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;<span class="stringliteral">        :param line:行</span></div>
<div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;<span class="stringliteral">        :param obj:执行的对象，当允许抛出异常时，则指明该对象为一个Exception或他的子类</span></div>
<div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;<span class="stringliteral">        :param task_name:线程唯一名称</span></div>
<div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;<span class="stringliteral">        :param LogObject:日志对象</span></div>
<div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;<span class="stringliteral">        :param raise_exception:是否抛出异常</span></div>
<div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;<span class="stringliteral">        &quot;&quot;&quot;</span></div>
<div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;        text = list(msg)</div>
<div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160; </div>
<div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;        <span class="keyword">def </span>get_stack():</div>
<div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;            text.append(<span class="stringliteral">&#39;\n&#39;</span>)</div>
<div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;            exc_type, exc_value, exc_traceback_obj = sys.exc_info()</div>
<div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;            extracted_list = traceback.extract_tb(exc_traceback_obj)</div>
<div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;            <span class="keywordflow">for</span> item <span class="keywordflow">in</span> traceback.StackSummary.from_list(extracted_list).format():</div>
<div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;                text.append(item)</div>
<div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160; </div>
<div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;        <span class="keywordflow">if</span> raise_exception:</div>
<div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;            <span class="keywordflow">if</span> isinstance(obj, type):</div>
<div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;                <span class="keywordflow">try</span>:</div>
<div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;                    <span class="keywordflow">raise</span> obj(msg)</div>
<div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;                <span class="keywordflow">except</span> obj:</div>
<div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;                    get_stack()</div>
<div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;                    text.append(f<span class="stringliteral">&#39;{obj.__name__} :{msg}&#39;</span>)</div>
<div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;            <span class="keywordflow">else</span>:</div>
<div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;                get_stack()</div>
<div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;                text.append(f<span class="stringliteral">&#39;{obj.__class__.__name__} :{msg}&#39;</span>)</div>
<div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;        ALog.log(msg=<span class="stringliteral">&#39;&#39;</span>.join(text), obj=obj, line=line, task_name=task_name,</div>
<div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;                 LogObject=LogObject <span class="keywordflow">if</span> LogObject <span class="keywordflow">is</span> <span class="keywordflow">not</span> <span class="keywordtype">None</span> <span class="keywordflow">else</span> <span class="keywordtype">None</span>, field=LogStatus.Error,</div>
<div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;                 text_color=ConsoleColor.FontColor.RED)</div>
<div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160; </div>
<div class="line"><a name="l00289"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1_a_log.html#a7ebc7c65d01989fca359f5eb5692ac5e">  289</a></span>&#160;    <span class="keyword">def </span><a class="code" href="classaestate_1_1util_1_1_log_1_1_a_log.html#a7ebc7c65d01989fca359f5eb5692ac5e">template</a>(self, status: LogStatus, *content, **kwargs):</div>
<div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;        <span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;<span class="stringliteral">        日志的模板,error、info和warn都在这里执行</span></div>
<div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;<span class="stringliteral">        &quot;&quot;&quot;</span></div>
<div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;        <span class="comment"># 从缓存中获取日志的对象</span></div>
<div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;        log_cache = <a class="code" href="classaestate_1_1work_1_1_cache_1_1_log_cache.html">LogCache</a>()</div>
<div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;        <span class="comment"># 从缓存中获取文件名,因为不能每次查询都生成一个文件,这样做是不合理的</span></div>
<div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;        _path = log_cache.get_filename(self.<a class="code" href="classaestate_1_1util_1_1_log_1_1_a_log.html#a81ebe6c29c966d9ba3d615eacea36c68">path</a>, self.<a class="code" href="classaestate_1_1util_1_1_log_1_1_a_log.html#af4863e5533f9ef060b6f0122aac9a079">max_clear</a>, status)</div>
<div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;        <span class="keywordflow">if</span> status == LogStatus.Info:</div>
<div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;            logo_show = <span class="stringliteral">&#39;info_logo_show&#39;</span></div>
<div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;        <span class="keywordflow">elif</span> status == LogStatus.Warn:</div>
<div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;            logo_show = <span class="stringliteral">&#39;warn_logo_show&#39;</span></div>
<div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;        <span class="keywordflow">elif</span> status == LogStatus.Error:</div>
<div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;            logo_show = <span class="stringliteral">&#39;error_logo_show&#39;</span></div>
<div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;        <span class="keywordflow">else</span>:</div>
<div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;            logo_show = <span class="stringliteral">&#39;info_logo_show&#39;</span></div>
<div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;        <span class="comment"># 如果日志中没有打印过logo,就写入logo</span></div>
<div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;        ls = getattr(log_cache, logo_show)</div>
<div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;        <span class="keywordflow">if</span> <span class="keywordflow">not</span> ls:</div>
<div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;            setattr(log_cache, logo_show, <span class="keyword">True</span>)</div>
<div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;            self.<a class="code" href="classaestate_1_1util_1_1_log_1_1_a_log.html#a255cc5b3ca68b73d3dbb7961458a614e">log_util</a>(_path, __log_logo__)</div>
<div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;        self.<a class="code" href="classaestate_1_1util_1_1_log_1_1_a_log.html#a255cc5b3ca68b73d3dbb7961458a614e">log_util</a>(_path, *content)</div>
<div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;        line = kwargs[<span class="stringliteral">&#39;line&#39;</span>] <span class="keywordflow">if</span> <span class="stringliteral">&#39;line&#39;</span> <span class="keywordflow">in</span> kwargs.keys() <span class="keywordflow">else</span> sys._getframe().f_back.f_lineno</div>
<div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;        obj = kwargs[<span class="stringliteral">&#39;obj&#39;</span>] <span class="keywordflow">if</span> <span class="stringliteral">&#39;obj&#39;</span> <span class="keywordflow">in</span> kwargs.keys() <span class="keywordflow">else</span> self</div>
<div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;        text = kwargs[<span class="stringliteral">&#39;pure_text&#39;</span>] \</div>
<div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;            <span class="keywordflow">if</span> <span class="stringliteral">&#39;pure_text&#39;</span> <span class="keywordflow">in</span> kwargs.keys() \</div>
<div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;            <span class="keywordflow">else</span> ALog.format_text(status, line, obj, status.value, <a class="code" href="namespaceaestate_1_1util_1_1others.html#a3f6285307f75af293d8645cce37f1d5e">logTupleToText</a>(<span class="keyword">False</span>, *content))</div>
<div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;        print(text)</div>
<div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160; </div>
<div class="line"><a name="l00318"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1_a_log.html#ad107d132d232b17e44ce750fcf532d22">  318</a></span>&#160;    <span class="keyword">def </span><a class="code" href="classaestate_1_1util_1_1_log_1_1_a_log.html#ad107d132d232b17e44ce750fcf532d22">info</a>(self, *content, **kwargs):</div>
<div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;        <span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;<span class="stringliteral">        成功日志</span></div>
<div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;<span class="stringliteral">        :param content:内容</span></div>
<div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;<span class="stringliteral">        :return:</span></div>
<div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;<span class="stringliteral">        &quot;&quot;&quot;</span></div>
<div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;        self.<a class="code" href="classaestate_1_1util_1_1_log_1_1_a_log.html#a7ebc7c65d01989fca359f5eb5692ac5e">template</a>(LogStatus.Info, *content, **kwargs)</div>
<div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160; </div>
<div class="line"><a name="l00326"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1_a_log.html#a1c11a87652863ac6893278789e69e920">  326</a></span>&#160;    <span class="keyword">def </span><a class="code" href="classaestate_1_1util_1_1_log_1_1_a_log.html#a1c11a87652863ac6893278789e69e920">warn</a>(self, *content, **kwargs):</div>
<div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;        <span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;<span class="stringliteral">        警告日志</span></div>
<div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;<span class="stringliteral">        :param content:内容</span></div>
<div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;<span class="stringliteral">        :return:</span></div>
<div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;<span class="stringliteral">        &quot;&quot;&quot;</span></div>
<div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;        self.<a class="code" href="classaestate_1_1util_1_1_log_1_1_a_log.html#a7ebc7c65d01989fca359f5eb5692ac5e">template</a>(LogStatus.Warn, *content, **kwargs)</div>
<div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160; </div>
<div class="line"><a name="l00334"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1_a_log.html#a1019e267d1c75b68bfe8377e764aadf3">  334</a></span>&#160;    <span class="keyword">def </span><a class="code" href="classaestate_1_1util_1_1_log_1_1_a_log.html#a1019e267d1c75b68bfe8377e764aadf3">error</a>(self, *content, **kwargs):</div>
<div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;        <span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;<span class="stringliteral">        错误日志</span></div>
<div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;<span class="stringliteral">        :param content:内容</span></div>
<div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;<span class="stringliteral">        :return:</span></div>
<div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;<span class="stringliteral">        &quot;&quot;&quot;</span></div>
<div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;        self.<a class="code" href="classaestate_1_1util_1_1_log_1_1_a_log.html#a7ebc7c65d01989fca359f5eb5692ac5e">template</a>(LogStatus.Error, *content, **kwargs)</div>
<div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160; </div>
<div class="line"><a name="l00342"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1_a_log.html#a255cc5b3ca68b73d3dbb7961458a614e">  342</a></span>&#160;    <span class="keyword">def </span><a class="code" href="classaestate_1_1util_1_1_log_1_1_a_log.html#a255cc5b3ca68b73d3dbb7961458a614e">log_util</a>(self, path_str, *content):</div>
<div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;        <span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;<span class="stringliteral">        日志工具</span></div>
<div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;<span class="stringliteral">        :param path_str:</span></div>
<div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;<span class="stringliteral">        :param content:</span></div>
<div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;<span class="stringliteral">        :return:</span></div>
<div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;<span class="stringliteral">        &quot;&quot;&quot;</span></div>
<div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;        path = self.<a class="code" href="classaestate_1_1util_1_1_log_1_1_a_log.html#ab92ae54c225423cfb67cd139a82e737b">get_path</a>(path_str)</div>
<div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;        <span class="keywordflow">if</span> self.<a class="code" href="classaestate_1_1util_1_1_log_1_1_a_log.html#a20784ee33a67271c18d1167075d722f8">save_flag</a>:</div>
<div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;            <a class="code" href="namespaceaestate_1_1util_1_1others.html#a94720f3965606231d30e1a50b0b0112b">write</a>(path, *content)</div>
<div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160; </div>
<div class="line"><a name="l00353"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1_a_log.html#ab92ae54c225423cfb67cd139a82e737b">  353</a></span>&#160;    <span class="keyword">def </span><a class="code" href="classaestate_1_1util_1_1_log_1_1_a_log.html#ab92ae54c225423cfb67cd139a82e737b">get_path</a>(self, end_path):</div>
<div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;        <span class="stringliteral">&quot;&quot;&quot;</span></div>
<div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;<span class="stringliteral">        日志类获取绝对路径</span></div>
<div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;<span class="stringliteral">        :param end_path:</span></div>
<div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;<span class="stringliteral">        :return:</span></div>
<div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;<span class="stringliteral">        &quot;&quot;&quot;</span></div>
<div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;        _STATIC_TXT = os.path.join(<span class="stringliteral">&#39;&#39;</span>, self.<a class="code" href="classaestate_1_1util_1_1_log_1_1_a_log.html#a81ebe6c29c966d9ba3d615eacea36c68">path</a> + end_path)</div>
<div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;        <span class="keywordflow">return</span> _STATIC_TXT</div>
<div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160; </div>
<div class="line"><a name="l00362"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1_a_log.html#a5805bd56672164f6cd008ba2850717bc">  362</a></span>&#160;    <span class="keyword">def </span><a class="code" href="classaestate_1_1util_1_1_log_1_1_a_log.html#a5805bd56672164f6cd008ba2850717bc">__new__</a>(cls, *args, **kwargs):</div>
<div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;        instance = Singleton.createObject(cls)</div>
<div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;        <span class="keywordflow">return</span> instance</div>
<div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160; </div>
<div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160; </div>
<div class="line"><a name="l00367"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1logging.html">  367</a></span>&#160;<span class="keyword">class </span><a class="code" href="classaestate_1_1util_1_1_log_1_1logging.html">logging</a>(object):</div>
<div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160; </div>
<div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;    @classmethod</div>
<div class="line"><a name="l00370"></a><span class="lineno"><a class="line" href="classaestate_1_1util_1_1_log_1_1logging.html#a1b4fedeac5072a676bdc69b2f20e51b4">  370</a></span>&#160;    <span class="keyword">def </span><a class="code" href="classaestate_1_1util_1_1_log_1_1logging.html#a1b4fedeac5072a676bdc69b2f20e51b4">gen</a>(cls, _object) -&gt; ALog:</div>
<div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;        <span class="keywordflow">return</span> _object.log_obj</div>
</div><!-- fragment --></div><!-- contents -->
<div class="ttc" id="aclassaestate_1_1util_1_1_log_1_1_a_log_html_a1c11a87652863ac6893278789e69e920"><div class="ttname"><a href="classaestate_1_1util_1_1_log_1_1_a_log.html#a1c11a87652863ac6893278789e69e920">aestate.util.Log.ALog.warn</a></div><div class="ttdeci">def warn(self, *content, **kwargs)</div><div class="ttdef"><b>Definition:</b> <a href="_log_8py_source.html#l00326">Log.py:326</a></div></div>
<div class="ttc" id="aclassaestate_1_1util_1_1_log_1_1_a_log_html_af4863e5533f9ef060b6f0122aac9a079"><div class="ttname"><a href="classaestate_1_1util_1_1_log_1_1_a_log.html#af4863e5533f9ef060b6f0122aac9a079">aestate.util.Log.ALog.max_clear</a></div><div class="ttdeci">max_clear</div><div class="ttdef"><b>Definition:</b> <a href="_log_8py_source.html#l00139">Log.py:139</a></div></div>
<div class="ttc" id="aclassaestate_1_1util_1_1_log_1_1_a_log_html_af3bd04c1beaee33453be2c373c1a52b3"><div class="ttname"><a href="classaestate_1_1util_1_1_log_1_1_a_log.html#af3bd04c1beaee33453be2c373c1a52b3">aestate.util.Log.ALog.log_error</a></div><div class="ttdeci">def log_error(msg=None, obj=None, line=sys._getframe().f_back.f_lineno, task_name='ERROR', LogObject=None, raise_exception=False)</div><div class="ttdef"><b>Definition:</b> <a href="_log_8py_source.html#l00256">Log.py:256</a></div></div>
<div class="ttc" id="anamespaceaestate_1_1work_1_1commad_html"><div class="ttname"><a href="namespaceaestate_1_1work_1_1commad.html">aestate.work.commad</a></div><div class="ttdef"><b>Definition:</b> <a href="commad_8py_source.html#l00001">commad.py:1</a></div></div>
<div class="ttc" id="aclassaestate_1_1util_1_1_log_1_1_a_log_html_a3e33b2ad8d5c73294686f5d77439bfa6"><div class="ttname"><a href="classaestate_1_1util_1_1_log_1_1_a_log.html#a3e33b2ad8d5c73294686f5d77439bfa6">aestate.util.Log.ALog.warning</a></div><div class="ttdeci">def warning(**kwargs)</div><div class="ttdef"><b>Definition:</b> <a href="_log_8py_source.html#l00252">Log.py:252</a></div></div>
<div class="ttc" id="aclassaestate_1_1util_1_1_log_1_1_a_log_html_a255cc5b3ca68b73d3dbb7961458a614e"><div class="ttname"><a href="classaestate_1_1util_1_1_log_1_1_a_log.html#a255cc5b3ca68b73d3dbb7961458a614e">aestate.util.Log.ALog.log_util</a></div><div class="ttdeci">def log_util(self, path_str, *content)</div><div class="ttdef"><b>Definition:</b> <a href="_log_8py_source.html#l00342">Log.py:342</a></div></div>
<div class="ttc" id="aclassaestate_1_1work_1_1_cache_1_1_log_cache_html"><div class="ttname"><a href="classaestate_1_1work_1_1_cache_1_1_log_cache.html">aestate.work.Cache.LogCache</a></div><div class="ttdef"><b>Definition:</b> <a href="_cache_8py_source.html#l00275">Cache.py:275</a></div></div>
<div class="ttc" id="aclassaestate_1_1util_1_1_log_1_1_a_log_html_a7ebc7c65d01989fca359f5eb5692ac5e"><div class="ttname"><a href="classaestate_1_1util_1_1_log_1_1_a_log.html#a7ebc7c65d01989fca359f5eb5692ac5e">aestate.util.Log.ALog.template</a></div><div class="ttdeci">def template(self, LogStatus status, *content, **kwargs)</div><div class="ttdef"><b>Definition:</b> <a href="_log_8py_source.html#l00289">Log.py:289</a></div></div>
<div class="ttc" id="aclassaestate_1_1util_1_1_log_1_1_a_log_html_a054d6aada1363564b31f771589a6627c"><div class="ttname"><a href="classaestate_1_1util_1_1_log_1_1_a_log.html#a054d6aada1363564b31f771589a6627c">aestate.util.Log.ALog.__init__</a></div><div class="ttdeci">def __init__(self, path, print_flag=False, save_flag=False, max_clear=10)</div><div class="ttdef"><b>Definition:</b> <a href="_log_8py_source.html#l00125">Log.py:125</a></div></div>
<div class="ttc" id="aclassaestate_1_1util_1_1_log_1_1_a_log_html_a04d47224afd614753a6e828353db7082"><div class="ttname"><a href="classaestate_1_1util_1_1_log_1_1_a_log.html#a04d47224afd614753a6e828353db7082">aestate.util.Log.ALog.log</a></div><div class="ttdeci">def log(msg, obj=None, line=sys._getframe().f_back.f_lineno, task_name='TEXT', LogObject=None, LogStatus field=LogStatus.Info, func=None, ConsoleColor.FontColor text_color=None, **kwargs)</div><div class="ttdef"><b>Definition:</b> <a href="_log_8py_source.html#l00194">Log.py:194</a></div></div>
<div class="ttc" id="aclassaestate_1_1util_1_1_log_1_1logging_html"><div class="ttname"><a href="classaestate_1_1util_1_1_log_1_1logging.html">aestate.util.Log.logging</a></div><div class="ttdef"><b>Definition:</b> <a href="_log_8py_source.html#l00367">Log.py:367</a></div></div>
<div class="ttc" id="aclassaestate_1_1util_1_1_log_1_1_console_write_html_af475435cc770e55290bb66e30065cd5f"><div class="ttname"><a href="classaestate_1_1util_1_1_log_1_1_console_write.html#af475435cc770e55290bb66e30065cd5f">aestate.util.Log.ConsoleWrite.fontColor</a></div><div class="ttdeci">fontColor</div><div class="ttdef"><b>Definition:</b> <a href="_log_8py_source.html#l00100">Log.py:100</a></div></div>
<div class="ttc" id="aclassaestate_1_1util_1_1_log_1_1_console_write_html_a09a5cbb2ebba72f1921989afd9eceaff"><div class="ttname"><a href="classaestate_1_1util_1_1_log_1_1_console_write.html#a09a5cbb2ebba72f1921989afd9eceaff">aestate.util.Log.ConsoleWrite.__init__</a></div><div class="ttdeci">def __init__(self)</div><div class="ttdef"><b>Definition:</b> <a href="_log_8py_source.html#l00099">Log.py:99</a></div></div>
<div class="ttc" id="aclassaestate_1_1util_1_1_log_1_1_a_log_html_a6e5724469f1334b1e764c6ed56c74a79"><div class="ttname"><a href="classaestate_1_1util_1_1_log_1_1_a_log.html#a6e5724469f1334b1e764c6ed56c74a79">aestate.util.Log.ALog.print_flag</a></div><div class="ttdeci">print_flag</div><div class="ttdef"><b>Definition:</b> <a href="_log_8py_source.html#l00141">Log.py:141</a></div></div>
<div class="ttc" id="anamespaceaestate_1_1util_1_1others_html"><div class="ttname"><a href="namespaceaestate_1_1util_1_1others.html">aestate.util.others</a></div><div class="ttdef"><b>Definition:</b> <a href="others_8py_source.html#l00001">others.py:1</a></div></div>
<div class="ttc" id="aclassaestate_1_1util_1_1_log_1_1_a_log_html_a8ab5c457b6aa576a6ad52c790b21eb27"><div class="ttname"><a href="classaestate_1_1util_1_1_log_1_1_a_log.html#a8ab5c457b6aa576a6ad52c790b21eb27">aestate.util.Log.ALog.pure_log</a></div><div class="ttdeci">def pure_log(msg, **kwargs)</div><div class="ttdef"><b>Definition:</b> <a href="_log_8py_source.html#l00145">Log.py:145</a></div></div>
<div class="ttc" id="aclassaestate_1_1util_1_1_log_1_1_console_color_1_1_show_type_html"><div class="ttname"><a href="classaestate_1_1util_1_1_log_1_1_console_color_1_1_show_type.html">aestate.util.Log.ConsoleColor.ShowType</a></div><div class="ttdef"><b>Definition:</b> <a href="_log_8py_source.html#l00083">Log.py:83</a></div></div>
<div class="ttc" id="aclassaestate_1_1util_1_1_log_1_1_a_log_html_a1019e267d1c75b68bfe8377e764aadf3"><div class="ttname"><a href="classaestate_1_1util_1_1_log_1_1_a_log.html#a1019e267d1c75b68bfe8377e764aadf3">aestate.util.Log.ALog.error</a></div><div class="ttdeci">def error(self, *content, **kwargs)</div><div class="ttdef"><b>Definition:</b> <a href="_log_8py_source.html#l00334">Log.py:334</a></div></div>
<div class="ttc" id="aclassaestate_1_1util_1_1_log_1_1_a_log_html_a5805bd56672164f6cd008ba2850717bc"><div class="ttname"><a href="classaestate_1_1util_1_1_log_1_1_a_log.html#a5805bd56672164f6cd008ba2850717bc">aestate.util.Log.ALog.__new__</a></div><div class="ttdeci">def __new__(cls, *args, **kwargs)</div><div class="ttdef"><b>Definition:</b> <a href="_log_8py_source.html#l00362">Log.py:362</a></div></div>
<div class="ttc" id="anamespaceaestate_1_1work_1_1_cache_html"><div class="ttname"><a href="namespaceaestate_1_1work_1_1_cache.html">aestate.work.Cache</a></div><div class="ttdef"><b>Definition:</b> <a href="_cache_8py_source.html#l00001">Cache.py:1</a></div></div>
<div class="ttc" id="aclassaestate_1_1util_1_1_log_1_1_a_log_html_a81ebe6c29c966d9ba3d615eacea36c68"><div class="ttname"><a href="classaestate_1_1util_1_1_log_1_1_a_log.html#a81ebe6c29c966d9ba3d615eacea36c68">aestate.util.Log.ALog.path</a></div><div class="ttdeci">path</div><div class="ttdef"><b>Definition:</b> <a href="_log_8py_source.html#l00140">Log.py:140</a></div></div>
<div class="ttc" id="aclassaestate_1_1util_1_1_log_1_1_console_color_1_1_font_color_html"><div class="ttname"><a href="classaestate_1_1util_1_1_log_1_1_console_color_1_1_font_color.html">aestate.util.Log.ConsoleColor.FontColor</a></div><div class="ttdef"><b>Definition:</b> <a href="_log_8py_source.html#l00031">Log.py:31</a></div></div>
<div class="ttc" id="aclassaestate_1_1util_1_1_log_1_1_a_log_html_ab92ae54c225423cfb67cd139a82e737b"><div class="ttname"><a href="classaestate_1_1util_1_1_log_1_1_a_log.html#ab92ae54c225423cfb67cd139a82e737b">aestate.util.Log.ALog.get_path</a></div><div class="ttdeci">def get_path(self, end_path)</div><div class="ttdef"><b>Definition:</b> <a href="_log_8py_source.html#l00353">Log.py:353</a></div></div>
<div class="ttc" id="anamespaceaestate_1_1util_html"><div class="ttname"><a href="namespaceaestate_1_1util.html">aestate.util</a></div><div class="ttdef"><b>Definition:</b> <a href="util_2____init_____8py_source.html#l00001">__init__.py:1</a></div></div>
<div class="ttc" id="aclassaestate_1_1util_1_1_log_1_1_console_write_html_a4a9c5798c794fdcbf14ba78faf716e35"><div class="ttname"><a href="classaestate_1_1util_1_1_log_1_1_console_write.html#a4a9c5798c794fdcbf14ba78faf716e35">aestate.util.Log.ConsoleWrite.backColor</a></div><div class="ttdeci">backColor</div><div class="ttdef"><b>Definition:</b> <a href="_log_8py_source.html#l00102">Log.py:102</a></div></div>
<div class="ttc" id="aclassaestate_1_1util_1_1_log_1_1_console_write_html_a22d1b6c36731d4e2f98a64b379733ccc"><div class="ttname"><a href="classaestate_1_1util_1_1_log_1_1_console_write.html#a22d1b6c36731d4e2f98a64b379733ccc">aestate.util.Log.ConsoleWrite.showType</a></div><div class="ttdeci">showType</div><div class="ttdef"><b>Definition:</b> <a href="_log_8py_source.html#l00101">Log.py:101</a></div></div>
<div class="ttc" id="anamespaceaestate_1_1work_1_1_modes_html"><div class="ttname"><a href="namespaceaestate_1_1work_1_1_modes.html">aestate.work.Modes</a></div><div class="ttdef"><b>Definition:</b> <a href="_modes_8py_source.html#l00001">Modes.py:1</a></div></div>
<div class="ttc" id="anamespaceaestate_1_1exception_html"><div class="ttname"><a href="namespaceaestate_1_1exception.html">aestate.exception</a></div><div class="ttdef"><b>Definition:</b> <a href="exception_2____init_____8py_source.html#l00001">__init__.py:1</a></div></div>
<div class="ttc" id="aclassaestate_1_1util_1_1_log_1_1_console_write_html"><div class="ttname"><a href="classaestate_1_1util_1_1_log_1_1_console_write.html">aestate.util.Log.ConsoleWrite</a></div><div class="ttdef"><b>Definition:</b> <a href="_log_8py_source.html#l00098">Log.py:98</a></div></div>
<div class="ttc" id="aclassaestate_1_1util_1_1_log_1_1_console_write_html_a888617da7d597f9e545a6e10fd2ce2dd"><div class="ttname"><a href="classaestate_1_1util_1_1_log_1_1_console_write.html#a888617da7d597f9e545a6e10fd2ce2dd">aestate.util.Log.ConsoleWrite.format_color</a></div><div class="ttdeci">def format_color(text, color=None)</div><div class="ttdef"><b>Definition:</b> <a href="_log_8py_source.html#l00113">Log.py:113</a></div></div>
<div class="ttc" id="aclassaestate_1_1util_1_1_log_1_1_console_color_1_1_background_color_html"><div class="ttname"><a href="classaestate_1_1util_1_1_log_1_1_console_color_1_1_background_color.html">aestate.util.Log.ConsoleColor.BackgroundColor</a></div><div class="ttdef"><b>Definition:</b> <a href="_log_8py_source.html#l00065">Log.py:65</a></div></div>
<div class="ttc" id="aclassaestate_1_1util_1_1_log_1_1_a_log_html_ae487698fec9a776b3d4ab92dbfe6da0a"><div class="ttname"><a href="classaestate_1_1util_1_1_log_1_1_a_log.html#ae487698fec9a776b3d4ab92dbfe6da0a">aestate.util.Log.ALog.format_text</a></div><div class="ttdeci">def format_text(LogStatus field, line, obj, task_name, msg, ned_text=False, ConsoleColor.FontColor text_color=None)</div><div class="ttdef"><b>Definition:</b> <a href="_log_8py_source.html#l00155">Log.py:155</a></div></div>
<div class="ttc" id="aclassaestate_1_1util_1_1_log_1_1_fields_length_html"><div class="ttname"><a href="classaestate_1_1util_1_1_log_1_1_fields_length.html">aestate.util.Log.FieldsLength</a></div><div class="ttdef"><b>Definition:</b> <a href="_log_8py_source.html#l00015">Log.py:15</a></div></div>
<div class="ttc" id="aclassaestate_1_1util_1_1_log_1_1_console_color_html"><div class="ttname"><a href="classaestate_1_1util_1_1_log_1_1_console_color.html">aestate.util.Log.ConsoleColor</a></div><div class="ttdef"><b>Definition:</b> <a href="_log_8py_source.html#l00026">Log.py:26</a></div></div>
<div class="ttc" id="anamespaceaestate_1_1util_1_1others_html_a3f6285307f75af293d8645cce37f1d5e"><div class="ttname"><a href="namespaceaestate_1_1util_1_1others.html#a3f6285307f75af293d8645cce37f1d5e">aestate.util.others.logTupleToText</a></div><div class="ttdeci">def logTupleToText(next_line=True, *content)</div><div class="ttdef"><b>Definition:</b> <a href="others_8py_source.html#l00065">others.py:65</a></div></div>
<div class="ttc" id="aclassaestate_1_1util_1_1_log_1_1logging_html_a1b4fedeac5072a676bdc69b2f20e51b4"><div class="ttname"><a href="classaestate_1_1util_1_1_log_1_1logging.html#a1b4fedeac5072a676bdc69b2f20e51b4">aestate.util.Log.logging.gen</a></div><div class="ttdeci">ALog gen(cls, _object)</div><div class="ttdef"><b>Definition:</b> <a href="_log_8py_source.html#l00370">Log.py:370</a></div></div>
<div class="ttc" id="anamespaceaestate_1_1util_1_1others_html_a94720f3965606231d30e1a50b0b0112b"><div class="ttname"><a href="namespaceaestate_1_1util_1_1others.html#a94720f3965606231d30e1a50b0b0112b">aestate.util.others.write</a></div><div class="ttdeci">def write(path, *content)</div><div class="ttdef"><b>Definition:</b> <a href="others_8py_source.html#l00082">others.py:82</a></div></div>
<div class="ttc" id="aclassaestate_1_1util_1_1_log_1_1_a_log_html_ad107d132d232b17e44ce750fcf532d22"><div class="ttname"><a href="classaestate_1_1util_1_1_log_1_1_a_log.html#ad107d132d232b17e44ce750fcf532d22">aestate.util.Log.ALog.info</a></div><div class="ttdeci">def info(self, *content, **kwargs)</div><div class="ttdef"><b>Definition:</b> <a href="_log_8py_source.html#l00318">Log.py:318</a></div></div>
<div class="ttc" id="aclassaestate_1_1util_1_1_log_1_1_a_log_html_a20784ee33a67271c18d1167075d722f8"><div class="ttname"><a href="classaestate_1_1util_1_1_log_1_1_a_log.html#a20784ee33a67271c18d1167075d722f8">aestate.util.Log.ALog.save_flag</a></div><div class="ttdeci">save_flag</div><div class="ttdef"><b>Definition:</b> <a href="_log_8py_source.html#l00142">Log.py:142</a></div></div>
<div class="ttc" id="aclassaestate_1_1util_1_1_log_1_1_a_log_html"><div class="ttname"><a href="classaestate_1_1util_1_1_log_1_1_a_log.html">aestate.util.Log.ALog</a></div><div class="ttdef"><b>Definition:</b> <a href="_log_8py_source.html#l00122">Log.py:122</a></div></div>
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.17
</small></address>
</body>
</html>
